#include <unistd.h>
#include <sys/time.h>
#include <stdio.h>

/*
一个线程串行执行多个长时间的计算任务 VS 多个线程并行执行多个长时间的计算任务
*/

// 一个需要1秒的计算任务函数
int calc_sqr(int n) {
    sleep(1); // 模拟长时间计算
    return n*n;
}

int main(int argc, char const *argv[])
{
    int items[5] = {1, 2, 3, 4, 5};
    int sqrs[5];
    struct timeval start, end;
    gettimeofday(&start, NULL);
    for (int i = 0; i < 5; i++) {
        sqrs[i] = calc_sqr(items[i]);
    }
    gettimeofday(&end, NULL);
    printf("time=%ld\n", end.tv_sec - start.tv_sec);

    int sum = 0;
    for (int i = 0; i < 5; i++) {
        sum += sqrs[i];
    }
    printf("sum=%d\n", sum);
    return 0;
}
